home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / lib / python2.5 / netrc.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-29  |  4KB  |  128 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.5)
  3.  
  4. '''An object-oriented interface to .netrc files.'''
  5. import os
  6. import shlex
  7. __all__ = [
  8.     'netrc',
  9.     'NetrcParseError']
  10.  
  11. class NetrcParseError(Exception):
  12.     '''Exception raised on syntax errors in the .netrc file.'''
  13.     
  14.     def __init__(self, msg, filename = None, lineno = None):
  15.         self.filename = filename
  16.         self.lineno = lineno
  17.         self.msg = msg
  18.         Exception.__init__(self, msg)
  19.  
  20.     
  21.     def __str__(self):
  22.         return '%s (%s, line %s)' % (self.msg, self.filename, self.lineno)
  23.  
  24.  
  25.  
  26. class netrc:
  27.     
  28.     def __init__(self, file = None):
  29.         if file is None:
  30.             
  31.             try:
  32.                 file = os.path.join(os.environ['HOME'], '.netrc')
  33.             except KeyError:
  34.                 raise IOError('Could not find .netrc: $HOME is not set')
  35.             except:
  36.                 None<EXCEPTION MATCH>KeyError
  37.             
  38.  
  39.         None<EXCEPTION MATCH>KeyError
  40.         fp = open(file)
  41.         self.hosts = { }
  42.         self.macros = { }
  43.         lexer = shlex.shlex(fp)
  44.         lexer.wordchars += '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
  45.         while not tt:
  46.             break
  47.         toplevel = tt = lexer.get_token()
  48.         if tt == 'machine':
  49.             entryname = lexer.get_token()
  50.         elif tt == 'default':
  51.             entryname = 'default'
  52.         elif tt == 'macdef':
  53.             entryname = lexer.get_token()
  54.             self.macros[entryname] = []
  55.             lexer.whitespace = ' \t'
  56.             while None:
  57.                 line = lexer.instream.readline()
  58.                 if not line or line == '\n':
  59.                     lexer.whitespace = ' \t\r\n'
  60.                     break
  61.                 
  62.                 continue
  63.                 continue
  64.         lexer
  65.         raise NetrcParseError('bad toplevel token %r' % tt, file, lexer.lineno)
  66.         login = ''
  67.         account = None
  68.         password = None
  69.         self.hosts[entryname] = { }
  70.         while None:
  71.             tt = lexer.get_token()
  72.             if tt == '' and tt == 'machine' and tt == 'default' or tt == 'macdef':
  73.                 if password:
  74.                     self.hosts[entryname] = (login, account, password)
  75.                     lexer.push_token(tt)
  76.                     break
  77.                 else:
  78.                     raise NetrcParseError('malformed %s entry %s terminated by %s' % (toplevel, entryname, repr(tt)), file, lexer.lineno)
  79.             if tt == 'login' or tt == 'user':
  80.                 login = lexer.get_token()
  81.                 continue
  82.             if tt == 'account':
  83.                 account = lexer.get_token()
  84.                 continue
  85.             if tt == 'password':
  86.                 password = lexer.get_token()
  87.                 continue
  88.             raise NetrcParseError('bad follower token %r' % tt, file, lexer.lineno)
  89.             continue
  90.             continue
  91.             return None
  92.  
  93.     
  94.     def authenticators(self, host):
  95.         '''Return a (user, account, password) tuple for given host.'''
  96.         if host in self.hosts:
  97.             return self.hosts[host]
  98.         elif 'default' in self.hosts:
  99.             return self.hosts['default']
  100.         else:
  101.             return None
  102.  
  103.     
  104.     def __repr__(self):
  105.         '''Dump the class data in the format of a .netrc file.'''
  106.         rep = ''
  107.         for host in self.hosts.keys():
  108.             attrs = self.hosts[host]
  109.             rep = rep + 'machine ' + host + '\n\tlogin ' + repr(attrs[0]) + '\n'
  110.             if attrs[1]:
  111.                 rep = rep + 'account ' + repr(attrs[1])
  112.             
  113.             rep = rep + '\tpassword ' + repr(attrs[2]) + '\n'
  114.         
  115.         for macro in self.macros.keys():
  116.             rep = rep + 'macdef ' + macro + '\n'
  117.             for line in self.macros[macro]:
  118.                 rep = rep + line
  119.             
  120.             rep = rep + '\n'
  121.         
  122.         return rep
  123.  
  124.  
  125. if __name__ == '__main__':
  126.     print netrc()
  127.  
  128.